class Solution {
public:
    bool isPalindrome(int x) {
        // 1. x 是负数
        // 2. x 最后一位是0，要想回文第一位也必须是0，只有 0 满足这一特性
        if(x < 0 || (x != 0 && x % 10 == 0))
            return false;        

        int reverseNum = 0;
        // 反转到reverseNum >= x 为止
        // 例如 x = 12321，reverseNum = 123，x = 12
        // 例如 x = 1221，reverseNum = 12，x = 12
        // 例如 x = 1234，reverNum = 43，x = 12
        // 例如 x = 12345， reverseNum = 345，x = 12
        while(reverseNum < x)
        {
            reverseNum = reverseNum * 10 + x % 10;
            x /= 10;
        }
        return reverseNum == x || x == reverseNum / 10;

        // if(x < 0)
        //     return false;
        // int t = x, n = 0, cnt = 0;
        // while(x)
        // {
        //     x /= 10;
        //     cnt++;
        // }
        // int i = 0;
        // while(t)
        // {
        //     if(i == cnt / 2)
        //         break;
        //     n = n * 10 + t % 10;
        //     t /= 10;
        //     i++;
        // }

        // if(cnt % 2 == 0)
        //     return t == n;
        // else 
        //     return t / 10 == n; 


        // if(x < 0)
        //     return false;
        // string s = to_string(x);
        // string temp(s);
        // reverse(s.begin(), s.end());
        // return temp == s;
    }
};